home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1994 / MacHack 1994.toast / MacHack™94 / Talks & Papers / Timothy Knox / JBprolog folder / test.p < prev   
Text File  |  1994-06-24  |  3KB  |  117 lines

  1.   
  2.   prolog(jb_prolog).
  3.   
  4.   t(T) :- prolog(jb_prolog), system_get(tick_msec,T).
  5.   t(T) :- prolog(aais_prolog), time(T1), T is integer(T1*1000/60).
  6.   t(T) :- prolog(open_prolog), T is cputime.
  7.   t(T) :- prolog(lpa_prolog), ticks(T1), T is int(T1*1000/60).
  8.   
  9.   /*****************************************************************/
  10.   /*****************************************************************/
  11.   
  12.   line(zh, sg).
  13.   line(ol, zh).
  14.   line(zg, zh).
  15.   line(lu, zg).
  16.   line(ag, zg).
  17.   line(lu, ag).
  18.   line(lg, ag).
  19.   line(ol, lu).
  20.   line(be, lu).
  21.   line(bs, ol).
  22.   line(bl, ol).
  23.   line(be, ol).
  24.   line(ne, bl).
  25.   line(ne, be).
  26.   line(la, be).
  27.   line(sp, be).
  28.   line(br, sp).
  29.   line(ma, br).
  30.   line(la, ma).
  31.   line(la, ne).
  32.   line(ge, la).
  33.  
  34.   dire(X,Y) :- line(X,Y).
  35.   dire(X,Y) :- !, line(Y,X).
  36.  
  37.   member(X,[X|_]).
  38.   member(X,[_|Y]) :- !, member(X,Y).
  39.  
  40.   find(X,Y,L,R) :- dire(X,Z), \+member(Z,L), find(Z,Y,[Z|L],R).
  41.   find(X,X,L,L).
  42.  
  43.   verb(X,Y,L) :- !, find(X,Y,[X],L).
  44.  
  45.   path :- verb(zh,ne,_), fail; true.
  46.  
  47.   /*****************************************************************/
  48.   /*****************************************************************/
  49.   
  50.   pair(red,green).
  51.   pair(red,blue).
  52.   pair(red,black).
  53.   pair(green,blue).
  54.   pair(green,black).
  55.   pair(blue,black).
  56.  
  57.   next(X,Y) :- pair(X,Y).
  58.   next(Y,X) :- !, pair(X,Y).
  59.  
  60.   color(A,B,C,D,E) :- 
  61.      next(A,C), next(C,E), next(A,B), 
  62.      next(B,E), next(D,E), next(B,C), 
  63.      next(A,D), next(C,D).
  64.   color(A,B,C,D,E) :- 
  65.      next(A,C), next(D,E), next(A,B), 
  66.      next(B,E), next(C,E), next(B,C), 
  67.      next(A,D), next(C,D).
  68.  
  69.   back :- color(_,_,_,_,_), fail; true.
  70.  
  71.   /*****************************************************************/
  72.   /*****************************************************************/
  73.   
  74.   concatenate([X|L1],L,[X|L2]) :- !, concatenate(L1,L,L2).
  75.   concatenate([],L,L).
  76.  
  77.   nreverse([X|L0],L) :- nreverse(L0,L1), concatenate(L1,[X],L).
  78.   nreverse([],[]).
  79.  
  80.   list([a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,
  81.         a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,
  82.         a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a]).
  83.   list([a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,
  84.         a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,
  85.         a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a]).
  86.   list([a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,
  87.         a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,
  88.         a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a]).
  89.  
  90.   nrev :- list(X), nreverse(X,_), fail; true.
  91.   
  92.   /*****************************************************************/
  93.   /*****************************************************************/
  94.  
  95.   range(X,L,H) :- L=<H, M is (L+H)/2, !, range1(X,L,H,M).
  96.  
  97.   range1(X,L,_,M) :- H1 is M-1, range(X,L,H1).
  98.   range1(X,_,_,X).
  99.   range1(X,_,H,M) :- L1 is M+1, !, range(X,L1,H).
  100.   
  101.   arith :- range(X,1,350), _ is 99999/(X*11), fail; true.
  102.   
  103.   /*****************************************************************/
  104.   /*****************************************************************/
  105.  
  106.   mesure(X) :- 
  107.     t(T1), X, t(T2), 
  108.     T is T2-T1,  
  109.     write(T), nl.
  110.  
  111.   bench :- 
  112.     mesure(path), 
  113.     mesure(back), 
  114.     mesure(nrev), 
  115.     mesure(arith), 
  116.     nl.
  117.